Fix adding what-if capability to resources#1502
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes resource capability detection so dsc resource list correctly reports the whatIf capability when a resource supports what-if mode via either the newer whatIfArg mechanism on set/delete or the legacy whatIf operation.
Changes:
- Detect
whatIfcapability fromset.args/delete.argscontainingwhatIfArg, and from the legacywhatIfoperation in the manifest. - Switch capability accumulation in discovery from
VectoHashSetto avoid duplicates. - Add/extend tests and update the table capability legend to include
wfor what-if.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| lib/dsc-lib/src/dscresources/dscresource.rs | Makes Capability hashable/equatable to support set-based capability accumulation. |
| lib/dsc-lib/src/discovery/command_discovery.rs | Implements the updated what-if capability detection logic while parsing manifests. |
| dsc/tests/dsc_resource_list.tests.ps1 | Adds a Pester test intended to validate what-if capability reporting in dsc resource list. |
| dsc/src/subcommand.rs | Updates table capability display mapping to include WhatIf as w. |
|
Should there be separate capabilities for Set What-if and Delete What-if, in case a resource doesn't implement both? |
That's a good question. My thinking is that |
PR Summary
There's 2 ways to detect if a resource supports
what-if:setordeletehas thewhatIfArgargwhatIfoperationChanged the code from using a
Vecto using aHashSetto avoid having to check ifwhat-ifwas already added to capabiltiies.PR Context
Fix #1501